package entity

import (
	"encoding/json"
	"final-url/pkg/final"
	"log"
	"os"
	"time"
)

const (
	LogLevelDebug = "debug"
	LogLevelInfo  = "info"
)

type Config struct {
	Port       string        `json:"port"`
	LogLevel   string        `json:"log_level"`
	AllowedIps []string      `json:"allowed_ips"`
	MT         *final.Config `json:"mt"`
	Alipay     *final.Config `json:"alipay"`
}

func NewConfigFromPath(path string) (Config, error) {
	var config Config
	file, err := os.Open(path)
	if err != nil {
		return Config{}, err
	}
	defer file.Close()

	err = json.NewDecoder(file).Decode(&config)
	return config, err
}

func (config *Config) Debug(msg string) {
	if config.LogLevel == LogLevelDebug {
		log.Printf("[DEBUG][%s] %s", time.Now(), msg)
	}
}

func (config *Config) Info(msg string) {
	if config.LogLevel == LogLevelInfo {
		log.Printf("[INFO][%s] %s", time.Now(), msg)
	}
}
